package com.example.demo.utils;

import lombok.Data;

import java.util.function.Supplier;

/**
 * @author cys1731 2020/3/30 17:08
 */
@Data
public class KeyValue<K, V> {
    private K key;
    private V value;

    public KeyValue() {

    }

    public KeyValue(K key, V value) {
        this.key = key;
        this.value = value;
    }

    /**
     * 如果 key 为 null，则设置新的 key
     * @param supplier 设置新的 key
     * @return 新的 key
     */
    public K computeKeyIfAbsent(Supplier<K> supplier) {
        if (this.key == null) {
            this.key = supplier.get();
        }
        return this.key;
    }

    /**
     * 如果 value 为 null，则设置新的 value
     * @param supplier 设置新的 value
     * @return 新的 value
     */
    public V computeValueIfAbsent(Supplier<V> supplier) {
        if (this.value == null) {
            this.value = supplier.get();
        }
        return this.value;
    }
}
